﻿#define _CRT_SECURE_NO_WARNINGS
#include"BinarySearch.h"
using namespace std;

//void test1()
//{
//	key::BSTree<int> tree1;
//	tree1.insert(5);
//	tree1.insert(10);
//	tree1.insert(4);
//	tree1.insert(7);
//	tree1.insert(2);
//	tree1.insert(1);
//	tree1.insert(8);
//	tree1.insert(3);
//
//	//cout << tree1.erase(5) << endl;
//	//tree1.InOrder();
//	tree1.erase(5);
//	tree1.insert(1);
//	tree1.InOrder();
//}

//class A
//{
//public:
//	A(int a, char b)
//		:_a(a)
//		,_b(b)
//	{}
//private:
//	int _a;
//	char _b;
//};
//int main()
//{
//	A* p = new A(1, '1');
//	return 0;
//}


//void TestBSTree1()
//{
//	value::BSTree<string, string> dict;
//	dict.insert("insert", "插入");
//	dict.insert("erase", "删除");
//	dict.insert("left", "左边");
//	dict.insert("string", "字符串");
//
//	string str;
//	while (cin >> str)
//	{
//		auto ret = dict.find(str);
//		if (ret)
//		{
//			cout << str << ":" << ret->_value << endl;
//		}
//		else
//		{
//			cout << "单词拼写错误" << endl;
//		}
//	}
//
//}
//
//void TestBSTree2()
//{
//	string strs[] = { "苹果", "西瓜", "苹果", "樱桃", "苹果", "樱桃", "苹果", "樱桃", "苹果" };
//	// 统计水果出现的次数
//	value::BSTree<string, int> countTree;
//	for (auto str : strs)
//	{
//		auto ret = countTree.find(str);
//		if (ret == NULL)
//		{
//			countTree.insert(str, 1);
//		}
//		else
//		{
//			ret->_value++;
//		}
//	}
//	countTree.InOrder();
//}


//int main()
//{
//	//TestBSTree2();
//	test1();
//	return 0;
//}

//void test1()
//{
//	value::BSTree<string, string> dict;
//	dict.insert("left", "左边");
//	dict.insert("right", "右边");
//	dict.insert("insert", "插入");
//	dict.insert("string", "字符串");
//
//	string s;
//	value::BSTNode<string, string>* ret = nullptr;
//	while (cin >> s)
//	{
//		ret = dict.find(s);
//		if (nullptr == ret)
//		{
//			cout << "没有此单词" << endl;
//		}
//		else
//		{
//			cout << ret->_value << endl;
//		}
//	}
//
//}

void test2()
{
	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜", \
		"苹果", "香蕉", "苹果", "香蕉" };

	key_value::BSTree<string, int> countTree;
	for (const auto& i : arr)
	{
		key_value::BSTNode<string, int>* a = countTree.Find(i);
		if (a)
		{
			++a->_value;
		}
		else
		{
			countTree.Insert(i, 1);
		}
	}

	countTree.InOrder();
}

//void test3()
//{
//	key::BSTree<int> test;
//	test.Insert(5);
//	test.Insert(1);
//	test.Insert(2);
//	test.Insert(9);
//	test.Insert(7);
//	test.Insert(6);
//	test.Insert(8);
//
//	key::BSTNode<int>* ret = test.Find(5);
//
//
//}
int main()
{
	test2();
	return 0;
}


